//options
clear all
set maxvar  32000, permanently
set matsize 11000, permanently
set more off, permanently
global bootstraps 1000
set seed 23

// macros
global klmshare				: env klmshare
global projects				: env projects
global klmperry             : env klmperry
global storage              : env storage
global storageb				: env storageb

global perrydatas       = "${klmperry}/CBA/data/perry/raw"
global perrydata        = "${klmperry}/CBA/data/perry/clean"
global masterinter  	= "${klmshare}/CurrentRAs/FredB/test"
global output           = "${projects}/ece_parenting/tex_files/other"
global dataperry        = "$klmperry/PerryPreschool/Data/Perry_PARI_and_Other_Data/PARI/DATA_PARI/"
global abcjpeanalysis   = "${klmshare}/Data_Central/Abecedarian/data/ABC-CARE/extensions/cba-iv/"
global dataihdp         = "${projects}/ece_parenting/data"
global dataihdp         = "$storageb/dc_data/"

cd  $dataihdp
use ihdp_data, clear
rename _all, lower

replace   bw = bw/1000

// impute iq
replace   stndscor =  iqcage     if stndscor ==.
replace   iqcage   =  stndscor   if iqcage ==.
foreach var of varlist stndscor iqcage { 
	replace `var' = mdi_24cor    if stndscor ==. & iqcage ==.
}
replace   stndscor =  iqcage     if stndscor ==.
replace   iqcage   =  stndscor   if iqcage ==.

// low birthweight
gen lb = 1
rename tot_siblings_natural siblings_natural

// list relevant variables
global baseline_child      twin sex bw lb anga black hispanic 
global baseline_mother     mage meduc works married 
global baseline_household  welfare siblings_natural employed_adult
global baseline_economy    employment medinc gpc
global outputs             iqcage stndscor 
global inputs              cum_avg_daycare_36m_sum

// mark baseline sample
reg  $baseline_child $baseline_mother $baseline_household $baseline_economy $outputs $inputs
gen  sample1 = e(sample) 
keep if sample1 == 1

// parenting latents, ages 1 and 3
foreach var of varlist alt_subscale_1_12-alt_subscale_6_12 alt_subscale_1_36-alt_subscale_8_36 {
	summ `var'
	gen  `var'_std = (`var' - r(mean))/r(sd)
}
# delimit
sem (_cons@0 X -> alt_subscale_1_12_std) (_cons@0 X -> alt_subscale_2_12_std) (_cons@0 X -> alt_subscale_3_12_std) 
	(_cons@0 X -> alt_subscale_4_12_std) (_cons@0 X -> alt_subscale_5_12_std) (_cons@0 X -> alt_subscale_6_12_std), method(adf);
predict parenting_age1, latent;
sem (_cons@0 X -> alt_subscale_1_36_std) (_cons@0 X -> alt_subscale_2_36_std) (_cons@0 X -> alt_subscale_3_36_std) (_cons@0 X -> alt_subscale_4_36_std)
	(_cons@0 X -> alt_subscale_5_36_std) (_cons@0 X -> alt_subscale_6_36_std) (_cons@0 X -> alt_subscale_7_36_std) (_cons@0 X -> alt_subscale_8_36_std), 
																																						 cov(e.alt_subscale_1_36_std*e.alt_subscale_2_36_std)
																																						 cov(e.alt_subscale_3_36_std*e.alt_subscale_4_36_std)
																																						 cov(e.alt_subscale_5_36_std*e.alt_subscale_6_36_std)
																																						 cov(e.alt_subscale_7_36_std*e.alt_subscale_8_36_std)
																																						 cov(e.alt_subscale_4_36_std*e.alt_subscale_7_36_std)
																																						 cov(e.alt_subscale_2_36_std*e.alt_subscale_7_36_std) method(adf);		
 predict parenting_age3, latent;
# delimit cr
egen    parenting_ages13 = rowmean(parenting_age1 parenting_age3)

// standardize latents in sample
foreach var of varlist parenting_ages13 {
	summ    `var' if tg == 0
	gen     `var'_std = (`var' - r(mean))/r(sd)
	replace `var'_std = `var'_std + 100
}
// log and standardize childcare variable 
summ    cum_avg_daycare_36m_sum  if tg == 0 
replace cum_avg_daycare_36m_sum  = (cum_avg_daycare_36m_sum    - r(mean))/r(sd)
replace cum_avg_daycare_36m_sum  =  cum_avg_daycare_36m_sum    + r(mean)

rename cum_avg_daycare_36m_sum c
rename parenting_ages13_std    p

global inputs_std c p
keep   ihdp site tg bwg $baseline_child $baseline_mother $baseline_household $baseline_economy $inputs_std $outputs
rename ihdp IHDP 
keep   IHDP p bwg site
tempfile masample
save   "`masample'", replace

// construct data
global data_controls = "$storage/ece_parenting/data/controls/replic_controls.dta"
use    $data_controls

sort IHDP
// F28, 18-Month Family Interview
merge 1:1 IHDP using "$storage/ece_parenting/ICPSR_09795_ASCII/DS0051/F28_dsc_0051.dta", keepusing(V19_18m V21_18m) generate(_fam18)
// F47, 30-Month Family Interview
merge 1:1 IHDP using "$storage/ece_parenting/ICPSR_09795_ASCII/DS0081/F47_dsc_0081.dta", generate(_mergeF47)

merge 1:1 IHDP using "$storage/ece_parenting/data/daycare/daycare_inputs.dta", generate(_mergeDaycare)
// F57, 36-Month Stanford-Binet IQ Scale, DS0145 pdf p. 177
merge 1:1 IHDP using "$storage/ece_parenting/ICPSR_09795_ASCII/DS0099/F57_dsc_0099.dta", generate(_mergeF57)

// add parenting
merge 1:1 IHDP using "$storage/ece_parenting/data/HOME/HOME_12m.dta", generate(_mergeHOME12)
merge 1:1 IHDP using "$storage/ece_parenting/data/HOME/HOME_36m.dta", generate(_mergeHOME36)
drop subscale_1_12 subscale_2_12 subscale_3_12 subscale_4_12 subscale_5_12 subscale_6_12 alt_subscale_1_12 alt_subscale_2_12 alt_subscale_3_12 alt_subscale_4_12 alt_subscale_5_12 alt_subscale_6_12 parenting_12 std_parenting_12 subscale_1_36 subscale_2_36 subscale_3_36 subscale_4_36 subscale_5_36 subscale_6_36 subscale_7_36 subscale_8_36 alt_subscale_1_36 alt_subscale_2_36 alt_subscale_3_36 alt_subscale_4_36 alt_subscale_5_36 alt_subscale_6_36 alt_subscale_7_36 alt_subscale_8_36 parenting_36 std_parenting_36 

// generate average of parenting
egen avg_parenting = rowmean(parenting_12_alt parenting_36_alt)
// generate final parenting measure!
egen std_avg_parenting = std(avg_parenting)

merge 1:1 IHDP using "$storage/ece_parenting/data/employment/emp_status.dta", generate(_mergeEmployment)
//employment data
replace curr_emp_hours_week_18m = 0 if curr_employed_18m == 0
replace curr_emp_hours_week_24m = 0 if curr_employed_24m == 0
replace curr_emp_hours_week_30m = 0 if curr_employed_30m == 0
replace curr_emp_hours_week_36m = 0 if curr_employed_36m == 0
egen avg_mean_hw = rowmean(curr_emp_hours_week_18m curr_emp_hours_week_24m curr_emp_hours_week_30m curr_emp_hours_week_36m) 
rename (avg_mean_hw) (mother_laborhours)

//residualize parenting measure
reg std_avg_parenting mother_laborhours, rob
predict parenting_residualized, residual

// keep only 985 primary analysis children
keep if PAG == 1

// chaparro, sojourner, and wiswall sample
gen wiswall_sample = .
replace wiswall_sample = 1 if PPVTm != . & bayley12_mdi != . & ppvt3 != . & TWIN == 0
replace wiswall_sample = 0 if wiswall_sample == .
// recode cousins
replace TWIN = 0 if IHDP == 5143 | IHDP == 5254 | IHDP == 5163 | IHDP == 5429

// their childcare measure
gen avg_hours_day = CHOUR_T / 2
*gen daycare_hours_wiswall = (avg_hours_day * (CDAYS_T / 2)) / 52
gen daycare_hours_wiswall = (CDAYS_Y2 * CHOUR_Y2 + CDAYS_Y3 * CHOUR_Y3) / 52 / 2
replace daycare_hours_wiswall = 0 if daycare_hours_wiswall == .

// mother hours 18m
gen mother_18m = (V19_18m * 5 +  V21_18m * 2)
replace mother_18m = 0 if mother_18m == .
// mother hours 30m
gen mother_weekday_30m = V17_30m * 5 if V16_30m == 1
gen mother_weekend_30m = V24 * 2 if V23 == 1
egen mother_30m = rowtotal(mother_weekday_30m mother_weekend_30m)
// total mother hours
egen mother_carehours = rowmean(mother_18m mother_30m)
// total care hours
gen total_hours_wiswall_1 = (24 - 11.5) * 7
// other hours
gen other_hours_wiswall_1 = total_hours_wiswall_1 - daycare_hours_wiswall - mother_carehours

gen total_hours_wiswall_2 = (24 - 12) * 7
// other hours
gen other_hours_wiswall_2 = total_hours_wiswall_2 - daycare_hours_wiswall - mother_carehours

gen total_hours_wiswall_3 = (24 - 12.5) * 7
// other hours
gen other_hours_wiswall_3 = total_hours_wiswall_3 - daycare_hours_wiswall - mother_carehours

gen total_hours_wiswall_4 = (24 - 13) * 7
// other hours
gen other_hours_wiswall_4 = total_hours_wiswall_4 - daycare_hours_wiswall - mother_carehours

// daycare
// make daycare hours cummulative
// average center-based daycare
gen  avg_daycare_18m 	= hours_daycare_18m
egen avg_daycare_24m 	= rowmean(hours_daycare_24m)
egen avg_daycare_30m 	= rowmean(hours_daycare_30m)
egen avg_daycare_36m 	= rowmean(hours_daycare_36m)

// Average daycare (secondary)
gen avg_daycare_18m_secondary 	= hours_daycare_18m_secondary 
egen avg_daycare_24m_secondary 	= rowmean(hours_daycare_24m_secondary)
egen avg_daycare_30m_secondary 	= rowmean(hours_daycare_30m_secondary)
egen avg_daycare_36m_secondary 	= rowmean(hours_daycare_36m_secondary)

// Average of averages daycare 
egen avg_daycare_18m_sum = rowtotal(avg_daycare_18m avg_daycare_18m_secondary)
egen avg_daycare_24m_sum = rowtotal(avg_daycare_24m avg_daycare_24m_secondary)
egen avg_daycare_30m_sum = rowtotal(avg_daycare_30m avg_daycare_30m_secondary)
egen avg_daycare_36m_sum = rowtotal(avg_daycare_36m avg_daycare_36m_secondary)

// generate final daycare measure!
egen cum_avg_daycare_36m_sum = rowmean(avg_daycare_18m_sum avg_daycare_24m_sum avg_daycare_30m_sum avg_daycare_36m_sum)


// other care
// average care in other place
gen  avg_othercare_18m 	= hours_othercare_18m
egen avg_othercare_24m 	= rowmean(hours_othercare_24m)
egen avg_othercare_30m 	= rowmean(hours_othercare_30m)
egen avg_othercare_36m 	= rowmean(hours_othercare_36m)

// average care in other place (secondary)
gen avg_othercare_18m_secondary 	= hours_othercare_18m_secondary 
egen avg_othercare_24m_secondary 	= rowmean(hours_othercare_24m_secondary)
egen avg_othercare_30m_secondary 	= rowmean(hours_othercare_30m_secondary)
egen avg_othercare_36m_secondary 	= rowmean(hours_othercare_36m_secondary)

// average of averages care in other place 
egen avg_othercare_18m_sum = rowtotal(avg_othercare_18m avg_othercare_18m_secondary)
egen avg_othercare_24m_sum = rowtotal(avg_othercare_24m avg_othercare_24m_secondary)
egen avg_othercare_30m_sum = rowtotal(avg_othercare_30m avg_othercare_30m_secondary)
egen avg_othercare_36m_sum = rowtotal(avg_othercare_36m avg_othercare_36m_secondary)

// final measure of care in other places
egen cum_avg_othercare_36m_sum = rowmean(avg_othercare_18m_sum avg_othercare_24m_sum avg_othercare_30m_sum avg_othercare_36m_sum)
gen total_hours_us = cum_avg_othercare_36m_sum + cum_avg_daycare_36m_sum + mother_carehours
rename (cum_avg_othercare_36m_sum cum_avg_daycare_36m_sum std_avg_parenting) (other_hours_us daycare_hours_us parenting)

// generate overlapping samples
gen nonmissing = 1 if IQCAGE != . & avg_parenting != . & avg_daycare_36m != .
replace nonmissing = 0 if nonmissing == .

keep IHDP TWIN TG parenting parenting_residualized wiswall_sample daycare_hours_us daycare_hours_wiswall mother_carehours mother_laborhours total_hours_wiswall_1 other_hours_wiswall_1 other_hours_us total_hours_us total_hours_wiswall_2 other_hours_wiswall_2 total_hours_wiswall_3 other_hours_wiswall_3 total_hours_wiswall_4 other_hours_wiswall_4 nonmissing
order IHDP TWIN TG wiswall_sample parenting parenting_residualized daycare_hours_wiswall daycare_hours_us mother_carehours mother_laborhours other_hours_wiswall_1 other_hours_us total_hours_wiswall_1

// merge in working sample in the paper
merge 1:1 IHDP using "`masample'"
keep  if _merge == 3
drop _merge
rename _all, lower


// collect variables
rename mother_laborhours m_works 
rename mother_carehours m_care 
rename other_hours_us o_care
rename p par 

// indicator for parenting
foreach dec in 25 50 75 {
	summ    par, d
	gen     par`dec'ind = 0 if par !=.
	replace par`dec'ind = 1 if par !=. & par > r(p`dec')
}

reg     par  m_care
predict par_res1, resid
reg     par  m_care m_works
predict par_res2, resid

global maternalvars m_care m_works
global othervars    o_care
global parvars      par par75ind par_res1 par_res2

// standardize
foreach var of varlist par_res1 par_res2 {
	summ    `var' if tg == 0
	replace `var' = (`var' - r(mean))/r(sd)
}

foreach var of varlist daycare_hours_us $maternalvars $othervars {
	summ    `var' if tg == 0
	replace `var' = (`var' - r(mean))/r(sd)
	replace `var' = `var' + r(mean)
}

// describe by sample
global sample_singletons   if twin == 0
global sample_twins        if twin == 1

matrix all = J(1,8,.)
// treatment effects
foreach var of varlist daycare_hours_us $maternalvars $othervars $parvars {
	foreach group in singletons twins {
		bootstrap, strata(bwg site tg) reps($bootstraps) : reg `var' tg ${sample_`group'}
		matrix  c`var'_g`group' = e(b)[1,2]
		matrix  b`var'_g`group' = e(b)[1,1]
		matrix se`var'_g`group'      = sqrt(e(V)[1,1])
		matrix  t`var'_g`group'      = abs(b`var'_g`group'[1,1]/se`var'_g`group'[1,1])
		matrix df`var'_g`group' = e(N) - e(rank)
		matrix  p`var'_g`group' = 2*(1 - normal(t`var'_g`group'[1,1]))
		
		matrix `var'_`group' = [c`var'_g`group',b`var'_g`group',p`var'_g`group'] 
	}
	matrix `var' = [`var'_singletons,`var'_twins]
}

// twin-singleton differences
gen singleton = 1 - twin
foreach var of varlist daycare_hours_us $maternalvars $othervars $parvars {
	gen  `var'_hip1 = `var'
	foreach sib in 0 1 {
		summ    `var'_hip1                        if tg == 0 & twin == `sib'
		replace `var'_hip1 = `var'_hip1 - r(mean) if twin == `sib'
	}
	bootstrap, strata(bwg site tg) reps($bootstraps) : reg `var'_hip1 singleton if tg == 1
	matrix  b`var'_hip1 = e(b)[1,1]
	matrix se`var'_hip1 = sqrt(e(V)[1,1])
	matrix  t`var'_hip1 = abs(b`var'_hip1[1,1]/se`var'_hip1[1,1])
	matrix df`var'_hip1 = e(N) - e(rank)
	matrix  p`var'_hip1 = 2*(1 - normal(t`var'_hip1[1,1]))
	
	matrix `var'_hip1 = [b`var'_hip1,p`var'_hip1]
	
	matrix `var' = [`var',`var'_hip1]
	matrix all = [all \ `var']
}
matrix all = all[2...,1...]

// table
matrix all = [ J(6,8,.) \ all[1,1...] \ J(1,8,.) \ all[2..3,1...] \ J(1,8,.) \ all[4,1...] \ J(1,8,.) \ all[5...,1...]]
clear
svmat all
gen   n = _n

// format
foreach var of varlist all* {
	gen    `var'and = "&" if n !=1
}

// header
gen all0and = "&" if n != 1
gen       all1_0 = "\begin{tabular}{ l  cccccccc}  \toprule" if n == 1

replace all1_0   = " "                    	      		     if n == 2
replace all0and  = " & \multicolumn{1}{c}{(1)}"     if n == 2
replace all1and  = " & \multicolumn{1}{c}{(2)}"     if n == 2
replace all2and  = " & \multicolumn{1}{c}{(3)}"     if n == 2
replace all3and  = " & \multicolumn{1}{c}{(4)}"     if n == 2
replace all4and  = " & \multicolumn{1}{c}{(5)}"     if n == 2
replace all5and  = " & \multicolumn{1}{c}{(6)}"     if n == 2
replace all6and  = " & \multicolumn{1}{c}{(7)}"     if n == 2
replace all7and  = " & \multicolumn{1}{c}{(8)}"     if n == 2

replace all1_0   = " "                    	      		 if n == 3
replace all0and  = " & \multicolumn{3}{c}{Singletons}"   if n == 3
replace all1and  = "   "           						 if n == 3
replace all2and  = "   "           						 if n == 3
replace all3and  = " & \multicolumn{3}{c}{Twins}"        if n == 3
replace all4and  = "   "           						 if n == 3
replace all5and  = "   "           						 if n == 3
replace all6and  = " & \multicolumn{2}{c}{$ H_0: \Delta^\text{Singletons} = \Delta^\text{Twins} $}" if n == 3
replace all7and  = "   "           						 if n == 3

replace all1_0   = " "                    	      		  if n == 4
replace all0and  = " & \multicolumn{1}{c}{Control}"       if n == 4
replace all1and  = " & \multicolumn{1}{c}{$ \Delta $ }"   if n == 4
replace all2and  = " & \multicolumn{1}{c}{$ p$-value }"   if n == 4
replace all3and  = " & \multicolumn{1}{c}{Control}"       if n == 4
replace all4and  = " & \multicolumn{1}{c}{$ \Delta $ }"   if n == 4
replace all5and  = " & \multicolumn{1}{c}{$ p$-value }"   if n == 4
replace all6and  = " & \multicolumn{1}{c}{Difference}"    if n == 4
replace all7and  = " & \multicolumn{1}{c}{$ p$-value }"   if n == 4

replace all1_0   = "  \multicolumn{9}{l}{\textbf{\textit{Panel a}. Age One to Three}}"            		         if n == 5
replace all0and  = "   "           						      		                		   					 if n == 5
replace all1and  = "   "           						      		                		   					 if n == 5
replace all2and  = "   "           						      		                		   					 if n == 5
replace all3and  = "   "           						      		               			   					 if n == 5
replace all4and  = "   "           						      		               			   					 if n == 5
replace all5and  = "   "           						      		               			   					 if n == 5
replace all6and  = "   "           						      		                		   					 if n == 5
replace all7and  = "   "           						      		               			   					 if n == 5

replace all1_0   = "  \multicolumn{9}{l}{\textbf{\hspace{2mm} \textit{Panel a1}. Childcare}}"            		 if n == 6
replace all0and  = "   "           						      		                		   					 if n == 6
replace all1and  = "   "           						      		                		   					 if n == 6
replace all2and  = "   "           						      		                		   					 if n == 6
replace all3and  = "   "           						      		               			   					 if n == 6
replace all4and  = "   "           						      		               			   					 if n == 6
replace all5and  = "   "           						      		               			   					 if n == 6
replace all6and  = "   "           						      		                		   					 if n == 6
replace all7and  = "   "           						      		               			   					 if n == 6

replace all1_0   = "  \multicolumn{9}{l}{\textbf{\hspace{2mm} \textit{Panel a2}. Maternal}}"            		 if n == 8
replace all0and  = "   "           						      		                		   					 if n == 8
replace all1and  = "   "           						      		                		   					 if n == 8
replace all2and  = "   "           						      		                		   					 if n == 8
replace all3and  = "   "           						      		               			   					 if n == 8
replace all4and  = "   "           						      		               			   					 if n == 8
replace all5and  = "   "           						      		               			   					 if n == 8
replace all6and  = "   "           						      		                		   					 if n == 8
replace all7and  = "   "           						      		               			   					 if n == 8

replace all1_0   = "  \multicolumn{9}{l}{\textbf{\hspace{2mm} \textit{Panel a3}. Other Caretakers}}"             if n == 11
replace all0and  = "   "           						      		                		   					 if n == 11
replace all1and  = "   "           						      		                		   					 if n == 11
replace all2and  = "   "           						      		                		   					 if n == 11
replace all3and  = "   "           						      		               			   					 if n == 11
replace all4and  = "   "           						      		               			   					 if n == 11
replace all5and  = "   "           						      		               			   					 if n == 11
replace all6and  = "   "           						      		                		   					 if n == 11
replace all7and  = "   "           						      		               			   					 if n == 11

replace all1_0   = "  \multicolumn{9}{l}{\textbf{\hspace{2mm} \textit{Panel a4}. Parenting}}"            	     if n == 13
replace all0and  = "   "           						      		                		   					 if n == 13
replace all1and  = "   "           						      		                		   					 if n == 13
replace all2and  = "   "           						      		                		   					 if n == 13
replace all3and  = "   "           						      		               			   					 if n == 13
replace all4and  = "   "           						      		               			   					 if n == 13
replace all5and  = "   "           						      		               			   					 if n == 13
replace all6and  = "   "           						      		                		   					 if n == 13
replace all7and  = "   "           						      		               			   					 if n == 13

replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Total Hours}" 		 		       					   if n == 7 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Hours of Care (with Child) }" 		 		       	   if n == 9  
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Hours Worked}" 		 	           		   			   if n == 10 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Total Hours}" 	                                       if n == 12
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Baseline}" 		 		                               if n == 14 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Baseline $ > 75 $ Percentile}"						   if n == 15
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Residual, Maternal Hours of Care}"                       if n == 16 
replace all1_0  = "   \multicolumn{1}{l}{\hspace{4mm} Residual, Maternal Hours of Care and Worked}"    		   if n == 17

// order
global orderlist all1_0 all0and
foreach num of numlist 1(1)8 {
	global orderlist $orderlist all`num' all`num'and
}
order $orderlist

// other formating
replace all8and = "\\   "
replace all8and = "\\ \midrule " 					       if n == 2  | n == 4
replace all8and = "\\ \hdashline"                          if n == 7  | n == 10 | n == 12
replace all8and = " \\ \cmidrule(l{.15cm}r{.15cm}){2-4} \cmidrule(l{.15cm}r{.15cm}){5-7} \cmidrule(l{.15cm}r{.15cm}){8-9}" if n == 3
replace all8and = " \\ \midrule"             			   if n == 17
replace all8and = " " 								       if n == 1

// put together in string
gen all = " "
foreach num of numlist 1(1)8 {
	tostring all`num'  , replace force format(%15.2fc)
	replace  all`num'  = "" if all`num'  == "."
}

global orderin all1_0 all0and
foreach num of numlist 1(1)8 {
	global orderin $orderin all`num' all`num'and 
}
global orderin $orderin all`num'
order $orderin n

foreach var of varlist all1_0-all8and {	
	replace  all = all + `var'
	replace  all`num' = " " if all`num' == "."
}

// save in tex format
keep all
cd $output
outsheet using maternaldescribe.tex, noquote nonames replace
